<!DOCTYPE html>
<title>SVGGeometryElement.getTotalLength method (element detached)</title>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script>
test(function() {
  var pathElement = document.createElementNS("http://www.w3.org/2000/svg", "path");

  function getTotalLength(string) {
      pathElement.setAttribute("d", string);
      return pathElement.getTotalLength();
  }

  assert_equals(getTotalLength('M0,20 L400,20 L640,20'), 640);
  assert_equals(getTotalLength('M0,20 L400,20 L640,20 z'), 1280);
  assert_equals(getTotalLength('M0,20 L400,20 z M 320,20 L640,20'), 1120);
}, document.title + " with SVGPathElement");

test(function() {
  var rectElement = document.createElementNS("http://www.w3.org/2000/svg", "rect");

  function getTotalLength(rx, ry, width, height) {
    rectElement.setAttribute("rx", rx);
    rectElement.setAttribute("ry", ry);
    rectElement.setAttribute("width", width);
    rectElement.setAttribute("height", height);

    return rectElement.getTotalLength();
  }

  assert_throws_dom("InvalidStateError", function() { getTotalLength(0, 0, 200, 300) });
  assert_throws_dom("InvalidStateError", function() { getTotalLength(50, 50, 200, 300)});
}, document.title + " with SVGRectElement");

test(function() {
  var circleElement = document.createElementNS("http://www.w3.org/2000/svg", "circle");

  circleElement.setAttribute("r", 10);
  assert_throws_dom("InvalidStateError", function() { circleElement.getTotalLength() });
  circleElement.setAttribute("r", 20);
  assert_throws_dom("InvalidStateError", function() { circleElement.getTotalLength() });
}, document.title + " with SVGCircleElement");
</script>
